package models

import (
	"database/sql"
	"time"
)

//这是一个宏物的AI
func (rt *RunTime) 召唤宠物(宠物ID int32) error {
	宠物 := &S宠物列表{Id: 宠物ID}

	if ok, _ := db.Get(宠物); ok == false {
		return sql.ErrNoRows
	}
	go func() {
		主人 := rt.V角色内容
		宠物内容 := 主人.V空间.F添加内容(E类别_宠物, 主人.X, 主人.Y, 0, 主人.V方向, 宠物)
		oldx := 宠物内容.X + 200
		oldy := 宠物内容.Y + 200
		for {
			time.Sleep(time.Second)                                //每一秒反应一次
			if 宠物内容.V空间.F计算两点距离(宠物内容.X, 宠物内容.Y, 主人.X, 主人.Y) > 50 { //如果距离过长，比如移动了，就直接过去
				宠物内容.F内容移动(主人.X+200, 主人.Y+200)
				动作_位置移动(宠物内容, 1, oldx, oldy, 宠物内容.X, 宠物内容.Y)
				oldx = 宠物内容.X + 200
				oldy = 宠物内容.Y + 200
			}
			//到这里，宠物就有了自己的活动空间
			//如果角色被攻击了，或角色在攻击某个怪物，那么自己也就可以上了
			//到了这里，说明怪物当前是闲置状态,保持与主要200距离就行了
			if (oldx != (主人.X + 200)) || (oldy != (主人.Y + 200)) {
				宠物内容.F内容移动(主人.X+200, 主人.Y+200)
				动作_位置移动(宠物内容, 1, oldx, oldy, 宠物内容.X, 宠物内容.Y)
				oldx = 宠物内容.X + 200
				oldy = 宠物内容.Y + 200
			}
		}
	}()
	return nil
}
